import axios from "axios";
import { createStore } from "vuex";

const store = createStore({
    state() {
        return {
            sellerHeader: {},//商家头部数据
            goods: [],//商家列表数据
            show: false, //是否展示购物车列表
            carList: [], //购物车列表数据
            price: 0, // 总价
        };
    },
    getters: {},
    mutations: {
        //获取商家头部数据
        setSeller(state, payload) {
            state.sellerHeader = payload.data;
        },
        //获取商家列表数据
        setGoods(state, payload) {
            state.goods = payload.data
        },
        //更新购物车是否展示状态
        showCar(state) {
            state.show = !state.show;
        },
        //更新购物车数据时，比如点击添加按钮传过来的数据需要先检测列表中是否存在，存在则不添加，不存在就push进去
        setCarList(state, payload) {
            // findIndex 满足条件 则 返回对应的列表项下标
            // 如果不满足 ，则返回-1，说明购物车列表中不存在这个对象
            const hasItem = state.carList.findIndex((item) => {
                // 购物车列表中对象的名字，是否等于按钮传过来的对象名字
                return item.name == payload.item.name;
            });

            if (hasItem == "-1") {
                state.carList.push(payload.item);
            }
        },
        //点击清空列表时 给carlist赋值空数组
        overCar(state, payload) {
            state.carList.forEach((item) => {
                item.count = 0;
            })
            state.carList = [];
            state.show = !state.show;
        },
        //点击这遮罩层列表消失
        outCar(state){
            state.show = !state.show;
        }
    },
    actions: {
        //发送请求获取商家头部数据
        async getSeller({ commit }) {
            const { data: { data }, } =
                await axios.get("/api/seller");
            commit("setSeller", { data })
            console.log(data)
        },
        //获取商品列表页面数据
        async getGoods({ commit }) {
            const {
                data: { data },
            } = await axios.get("/api/goods");
            commit("setGoods", { data });
            console.log(data)
        }

    }

});

export default store;